
package com.phevos.common.util;

public class UnitTransform
{
    private static int K = 1024;

    private static int M = K * K;

    private static int G = M * K;

    /**
     * ����ͬ��λת����M������ĵ�λ��(��G��GB��M��MB��K��KB��B������λ��Ĭ��ΪB
     * 
     * @param value String ԭ��λ�����֣��磺12M
     * @return float ����λ������
     */
    public static float transToMB(String value)
    {
        if (value == null)
        {
            return Float.MIN_VALUE;
        }
        return transToB(value) / M;
    }

    /**
     * ����λ���ɳ�B
     * 
     * @param value String ԭ��λ�����֣��磺12M
     * @return float ����λ������
     */
    public static float transToB(String value)
    {
        if (value == null)
        {
            return Float.MIN_VALUE;
        }
        try
        {
            if (value.endsWith("B") || value.endsWith("b"))
            {
                value = value.substring(0, value.length() - 1);
            }
            if (value.endsWith("G") || value.endsWith("g"))
            {
                value = value.substring(0, value.length() - 1);
                float f = Float.parseFloat(value);
                return f * G;
            }
            if (value.endsWith("M") || value.endsWith("m"))
            {
                value = value.substring(0, value.length() - 1);
                float f = Float.parseFloat(value);
                return f * M;
            }
            if (value.endsWith("K") || value.endsWith("k"))
            {
                value = value.substring(0, value.length() - 1);
                float f = Float.parseFloat(value);
                return f * K;
            }
            float f = Float.parseFloat(value);
            return f;
        }
        catch (Exception e)
        {
            return Float.MIN_VALUE;
        }
    }

    /**
     * ����λ���ɳ�KB
     * 
     * @param value String ԭ��λ�����֣��磺12M
     * @return float ����λ������
     */
    public static float transToKB(String value)
    {
        if (value == null)
        {
            return Float.MIN_VALUE;
        }
        return transToB(value) / K;
    }

    /**
     * ����λ���ɳ�GB
     * 
     * @param value String ԭ��λ�����֣��磺12M
     * @return float ����λ������
     */
    public static float transToGB(String value)
    {
        if (value == null)
        {
            return Float.MIN_VALUE;
        }
        return transToB(value) / G;
    }
}
